package coint.btc.util;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @ClassName:  ExcelField
 * @Description:用于Excel文档列的注解
 * @author      Zc
 * @version     1.0
 * @since       2017年5月30日 下午8:13:01
 */
@Documented
@Inherited
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ExcelField {
    /**
     * 该属性在Excel中所属列的列名
     * @return  该列列名
     * @author  Zc
     * @since   2017年5月30日 下午8:23:37
     */
    String title();

    /**
     * 是否需要该列的值, 如果该列出现null值则抛出NullPoint异常
     * @return  是否需要该列的值
     * @author  Zc
     * @since   2017年5月30日 下午8:30:52
     */
    boolean required() default false;

    /**
     * 该列的列索引, 需要为一个大于等于1的正数, 两列给予相同索引时按属性从上至下排序
     * @return  该列索引
     * @author  Zc
     * @since   2017年5月30日 下午8:23:49
     */
    int index() default 1;

    /**
     * 该列需要被转换的数值, 需要一个json格式的键值对类型字符串穿, 优先级高于formula, 与formula同时出现时只进行format
     * @return  键值对的json字符串
     * @author  Zc
     * @since   2017年5月30日 下午8:27:13
     */
    String format() default "";

    /**
     * 指定日期转换格式, 优先级最低, 不与format, formula共存
     * @return  格式字符串
     * @author  Zc
     * @since   2017年7月21日 下午4:34:53
     */
    String dateformat() default "";
}